/**
 * @var usr  用户名输入框
 * @var usr_tip  用户名提示框
 * @var pass    密码输入框
 * @var pass_tip    密码提示框
 * @var word    确认密码输入框
 * @var word_tip    确认密码提示框
 * @var mail    邮箱输入框
 * @var mail_tip    邮箱提示框
 * @var mailbox 邮箱验证码框
 */

var usr = document.getElementById("usr");
var usr_tip = document.getElementById("usr_tip");

var pass = document.getElementById("pass");
var pass_tip = document.getElementById("pass_tip");

var word = document.getElementById("word");
var word_tip = document.getElementById("word_tip");

var mail = document.getElementById("mail");
var mail_tip = document.getElementById("mail_tip");

var mailbox = document.getElementById("mailbox");

/**
 * @function success()  成功时
 * @function error()    失败时
 * @var regList 负责正则的存储
 * @function validate() 验证正则成功与否
 * @function validateUsr()  判断用户名
 * @function validatePass() 判断密码
 * @function validateWord() 确认密码
 * @function validateMail() 邮箱验证
 */

usr.addEventListener("blur",validateUsr);
pass.addEventListener("blur",validatePass);
word.addEventListener("blur",validateWord);
mail.addEventListener("blur",validateMail);
// pass.addEventListener("blur",validatePass);
 
function success(input, tip) {
    tip.style.display = "none";
    input.className = "success";
}

function error(tip, input, tipEle) {
    tipEle.style.display = "block";
    input.className = "";
    tipEle.className = "warn";
    tipEle.innerHTML = tip;
}

var regList = {
    "usrReg": /^[a-z\u2E80-\u9FFF\-_0-9]{4,20}$/i,
    "pureNumber": /^\d+$/i,
    "maxlength4": /^.{0,4}$/,
    "hasNumber": /\d/,
    "hasLetter": /[a-zA-Z]/,
    "hasSC": /[\!\@\#\$\%\^]/,
    "minlength6": /^.{0,5}$/,
    "mail": /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@[0-9a-z]{2,9}\.[a-z]{2,6}(\.[a-z]{2,3})?$/i,
}

function validate(str, reg) {
    return reg.test(str);
}

function validateUsr() {
    var usrValue = usr.value;
    if (validate(usrValue, regList.maxlength4)) {
        return error("请输入5位以上的账号", usr, usr_tip);
    }
    if (validate(usrValue, regList.pureNumber)) {
        return error("用户名不能为纯数字", usr, usr_tip);
    }
    if (validate(usrValue, regList.usrReg)) {
        return success(usr, usr_tip);
    }
    return error("支持中文，英文，数字，字母，-，_ 的4~20位字符", usr, usr_tip);
}

function validatePass(){
    var passValue = pass.value;
    var strength = 0;
    if (validate(passValue, regList.hasNumber)) {
        strength++;
    }
    if (validate(passValue, regList.hasLetter)) {
        strength++;
    }
    if (validate(passValue, regList.hasSC)) {
        strength++;
    }
    if (validate(passValue, regList.minlength6)) {
        return error("请输入六位以上的字符组合", pass, pass_tip)
    }
    if (strength === 3) {
        success(pass, pass_tip)
    } else if (strength === 2) {
        error("密码强度不足，建议升级密码", pass, pass_tip)
    } else if (strength === 1) {
        error("密码强度严重不足，强烈建议升级密码", pass, pass_tip)
    }
}     

function validateWord(){
    var passValue=pass.value;
    var wordValue=word.value;
    if(wordValue===passValue){
        return success(word,word_tip);
    }else{
        return error("两次输入密码不同，请重新输入",word,word_tip);
    }
}

function validateMail(){
    var mailValue=mail.value;
    if(validate(mailValue,regList.mail)){
        return success(mail,mail_tip);
    }else{
        return error("不符合邮箱规则，请重新输入",mail,mail_tip);
    }
}
